package persistencia.cv;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Collection;
import java.util.LinkedList;

import negocio.cv.Localidad;
import negocio.cv.TipoEstudio;
import negocio.cv.Titulo;
import persistence.DBManager;

public class DAOTitulo implements DAOInterface {

	private DBManager manager;
	private TipoEstudio tipo;

	public DAOTitulo(DBManager manager) {
		this.manager = manager;
		
	}
	@Override
	public void delete(Object b) {
		// TODO Auto-generated method stub

	}

	@Override
	public Titulo get(String businessId) {
		Titulo t = null;
		ResultSet rs = null;
		String query;
		int id = Integer.parseInt(businessId);
		try {
			query = "call tesis.titulo_get("+id+",@nombre,@descripcion,@tipo)";
			rs = manager.openCallableQuery(query);
			rs.first();
			String desc=rs.getObject(3)!=null?rs.getObject(3).toString():null;
			t=new Titulo(id,rs.getObject(1).toString(),desc);
			

		} catch (SQLException exc) {
			exc.printStackTrace();
		}
		return t;
	}


	/**
	 * Retorna todas los titulos asociados a una tipos de titulo
	 * @param businessId: el id del tipo de titulo
	 * @return
	 */
	public LinkedList<Titulo> getAll(String businessId) {
		int id=Integer.parseInt(businessId);
		ResultSet rs = null;
		LinkedList<Titulo> titulos=new LinkedList<Titulo>();
		Titulo tit=null;
		String query;
	   
	        try {
	            query="SELECT T.idtitulo, T.nombre"
	                   +" FROM tesis.titulo T where T.idtipoestudio="+id;
	          rs=manager.openQuery(query);  
	          
	          while(rs.next())
	          { 
	        	  tit=new Titulo(rs.getInt(1),rs.getObject(2).toString(),null);
	        	  titulos.add(tit);
	          }
	        }catch(SQLException e)
	        {
	        	e.printStackTrace();
	        }
	        return titulos; 
	}
	@Override
	public Collection getAll() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public int insert(Object b) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public void update(Object b) {
		// TODO Auto-generated method stub

	}
	public TipoEstudio getTipo() {
		return tipo;
	}
	public void setTipo(TipoEstudio tipo) {
		this.tipo = tipo;
	}

}
